#ifndef EGADU_LIST_H
#define EGADU_LIST_H

#include "User.h"

#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif

namespace eGaduLib
{
    /**
    @brief Klasa zarządzania listą kontaktów
    */
    class DLL_EXPORT eGaduList
    {
    public:
        /// Konstruktor
        eGaduList(void);
        /// Destruktor
        ~eGaduList(void);

        /**
        @brief Dodanie nowego kontaktu do listy

        @param [in] usr Wskaźnik na nowy kontakt
        @return void
        */
        void addUser(User *usr);

        /**
        @brief Zwraca wskaźnik na wybrany kontakt
        @param [in] index Numer kontaktu na liście
        @return Wskaźnik na wskazany kontakt, jeśli kontaktu o numerze podanym w argumencie index nie ma- zwraca 0
        */
        User *getUser(int index);

        /**
        @brief Usuwa wybrany kontakt z listy
        @param [in] index Numer kontaktu na liście
        */
        void remUser(int index);

        /**
        @brief Zwraca liczbę kontaktów na liście
        @return Liczba kontaktow na liście
        */
        int getLength();

        /**
        @brief Zwalnia pamięć i niszczy listę kontaktów
        */
        void release();
    };
}

#endif
